import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendQQMailUtil {

    private static final Properties prop;

    static {
        // 加载配置文件
        prop = new Properties();
        try {
            prop.load(ClassLoader.getSystemResourceAsStream("config/config.properties"));
        } catch (IOException e) {
            System.err.println("++++++++++++++++++load config.properties fail++++++++++++++++++");
            e.printStackTrace();
        }
    }

    public static void send(Map<String, String> map) throws MessagingException{
        Properties properties = new Properties();
        properties.put("mail.transport.protocol", prop.getProperty("mail.transport.protocol", "smtp"));// 连接协议
        properties.put("mail.smtp.host", prop.getProperty("mail.host", "smtp.qq.com"));// 主机名
        properties.put("mail.smtp.port", prop.getOrDefault("mail.port", 465));// 端口号
        properties.put("mail.smtp.auth", prop.getProperty("mail.auth", "true"));
        properties.put("mail.smtp.ssl.enable", prop.getProperty("mail.ssl.enable", "true"));// 设置是否使用ssl安全连接 ---一般都使用
        properties.put("mail.debug", prop.getProperty("mail.debug", "false"));// 设置是否显示debug信息 true 会在控制台显示相关信息
        // 得到回话对象
        Session session = Session.getInstance(properties);
        // 获取邮件对象
        Message message = new MimeMessage(session);
        // 设置发件人邮箱地址
        message.setFrom(new InternetAddress(map.get("fromMail")));
        // 设置收件人邮箱地址
//        message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com")});
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(map.get("sendMail")));//一个收件人
        // 设置邮件标题
        message.setSubject(map.get("subject"));
        // 设置邮件内容
        message.setText(map.get("text"));
        // 得到邮差对象
        Transport transport = session.getTransport();
        // 连接自己的邮箱账户
        transport.connect(map.get("name"), map.get("authCode"));// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }
}